In Web development, the term “Web mashup” is often used to describe a Web application that combines content from multiple sources to provide a new and distinct service to a user. Content used in mashups is often sourced from third party Web services via an application programming interface (API) or other interface. The entities involved in executing a mashup typically include: (1) content providers, such as third-party Web service providers, that make content available; (2) a Web site (“the mashup site”) that facilitates access to a mashup that combines content obtained from the third-party Web service providers; and (3) a client Web browser that acts as a user interface to the mashup and that may actually execute the mashup using a client-side Web language such as Javascript. Web mashups are also sometimes referred to as Web application hybrids.
Many Web mashups are structured such that content obtained from at least one third-party Web service is provided as input to at least another third-party Web service or such that content obtained from two or more third-party Web services must be combined prior to further processing or presentation of results to a user. In fact, numerous such content dependencies can exist within a single Web mashup. The existence of these content dependencies can make mashups extremely difficult to program and improper handling of such content dependencies during development can lead to unreliable performance at runtime. Furthermore, since it is impossible to predict during development how long it will take to obtain content from any particular Web service at runtime, the sequence in which Web service calls are executed by a Web mashup cannot be optimized to improve performance.